package br.com.sgac.controler;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



import br.com.sgac.dao.FuncionalidadeDAO;
import br.com.sgac.dao.PerfilDAO;
import br.com.sgac.model.Funcionalidade;
import br.com.sgac.model.Perfil;

/**
 * Servlet implementation class PerfilServlet
 */
@WebServlet("/PerfilServlet")
public class PerfilServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	PerfilDAO perfilDAO = new PerfilDAO();
	FuncionalidadeDAO funcionalidadeDAO = new FuncionalidadeDAO();

	
	/**
     * @see HttpServlet#HttpServlet()
     */
    public PerfilServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Perfil perfil = new Perfil();
		List<Perfil> perfils = new ArrayList<Perfil>();
		List<Funcionalidade> funcionalidades = new ArrayList<Funcionalidade>();
		perfil = new Perfil();
		
		String editar = request.getParameter("editar");
		perfils = perfilDAO.findAll();
		funcionalidades = funcionalidadeDAO.findAll();
		
		
		request.setAttribute("perfils", perfils);
		request.setAttribute("funcionalidades", funcionalidades);
	
		if(editar!=null){
			perfil = perfilDAO.findPerfilById(editar);
			request.setAttribute("perfil", perfil);
			request.setAttribute("acao", "Alterar");
		}else{
			request.setAttribute("acao", "Cadastrar");
		}
		RequestDispatcher rd = request.getRequestDispatcher("app/FormCadPerfil.jsp");
		rd.forward(request, response);
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Funcionalidade funcionalidade =  new Funcionalidade();
		Perfil perfil = new Perfil();
		
		String acao = request.getParameter("acao");
		perfil = (Perfil)request.getAttribute("perfil");
		
		perfilDAO.begin();

		for(String s:perfil.getIdFuncionalidades()){
			funcionalidade = funcionalidadeDAO.findyByFuncionalidadeId(s);
			perfil.addFuncionalidades(funcionalidade);
		}
		
		if(acao.equals("Cadastrar"))
			perfilDAO.persist(perfil);
		else if(acao.equals("Alterar"))
			perfilDAO.merge(perfil);
		
	
		perfilDAO.commit();
		perfilDAO.close();
		
		doGet(request, response);
	}

}
